package com.cn.ccp.webservice;

/**
 * 同步接口
 * @author renyongcheng
 *
 */
public interface IWeb {

	/**
	 * 用户登录
	 * @param userLoginName：用户登录名称
	 * @param password：用户密码
	 * @return：以json格式返回登录信息，登录成功，则显示用户的信息信息，登录失败则返回失败消息
	 * 成功:{"msg":"success","student":{"id":"12345","userName":"Mr", "number":"12345","dormitoryAddress":"jianshelu","email":"email@163.com","sex":"man","faculty","facultyName","specialtyName":"specialtyName","image":"imageUrl","gradeName","gradeName"}}
	 * 失败:{"msg":"falied","failedmsg":"failedType"}
	 * failedType：失败类型，定义如下：
	 * 1-----用户名不存在
	 * 2-----密码错误
	 * 3-----用户已停用
	 * 
	 */
	public String login(String userLoginName,String password);
	
	/**
	 * 用户退出接口
	 * @param userId：用户id
	 * @return
	 */
	public void logout(int userId);
	
	/**
	 * 查询所有学院信息
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----查询失败
	 * 成功
	 * {"msg":"success","contents":[
	 * 												{"facultyName":"  计算机学院","id":13,"description":"  计算机学院  计算机学院  计算机学院"},
	 * 												{"facultyName":"  计算机学院-2","id":14,"description":"  计算机学院-2"}]
	 * }
	 */
	public String queryFaculty(int userId);
	
	/**
	 * 添加学院
	 * @param facultyName：学院名称
	 * @param description：学院描述
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----添加失败
	 *  成功：
	 * {"msg":"success","contents":[
	 * 												{"facultyName":"  计算机学院","id":13,"description":"  计算机学院  计算机学院  计算机学院"},
	 * 												{"facultyName":"  计算机学院-2","id":14,"description":"  计算机学院-2"}]
	 * }
	 */
	public String addFaculty(String facultyName,String description,int userId);
	
	/**
	 * 更新学院
	 * @param id：学院id
	 * @param facultyName：学院名称
	 * @param description：学院描述
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----id小于0
	 *  3----facultyName 为空
	 *  4----更新失败
	 *  成功：
	 *   {"msg":"success",faculty:[{id:id,facultyName:facName,description:des}]}
	 */
	public String updateFaculty(int id,String facultyName,String description,int userId);
	
	/**
	 * 删除学院
	 * @param id：学院id
	 * @param userId：登录用户id
	 * @return
	 * * 失败：
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----id 小于0
	 *  3----删除失败
	 *  成功：
	 *   {"msg":"success",faculty:[{id:id,facultyName:facName,description:des}]}
	 */
	public String deleteFaculty(int id,int userId);
	
	/**
	 * 查询所有专业信息
	 * @param userId
	 * @return
	 * 失败：
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录 
	 *  2----查询失败
	 *  成功
	 *  {"msg":"success","contents":[
	 *  											{"facultyName":"  计算机学院","id":18,"description":"计算机计算机计算机计算机计算机","facultyId":"13","specialtyname":"计算机"},
	 *  											{"facultyName":"  计算机学院","id":19,"description":"计算机-2计算机-2","facultyId":"13","specialtyname":"计算机-2"}]
	 *  }
	 */
	public String querySpecialty(int userId);
	
	/**
	 * 添加专业
	 * @param name：专业名称
	 * @param des：专业描述
	 * @param facultyId：所属学院id
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----名称为空
	 *  3----学院id不合法
	 *  4----名称重复
	 *  5----添加失败
	 *  成功：
	 *  {"msg":"success" }
	 */
	public String addSpecialty(String name,String des,int facultyId,int userId);
	
	
	/**
	 * 添加专业
	 * @param id：专业id
	 * @param name：专业名称
	 * @param des：专业描述
	 * @param facultyId：所属学院id
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----专业id 为空
	 *  3----学院id不合法
	 *  4----名称为空
	 *  5----名称重复
	 *  6----更新失败
	 *   {"msg":"success"} 
	 */
	public String updateSpecialty(int id,String name,String des,int facultyId,int userId);
	
	/**
	 * 删除专业
	 * @param id：专业id
	 * @param userId：登录用户id
	 * @return
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----专业id 为空
	 *  3----删除失败
	 *  {"msg":"success"} 
	 */
	public String deleteSpecialty(int id,int userId);
	
	/**
	 * 查询所有教研组
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录 
	 *  2----查询失败
	 *  成功：
	 *   {"msg":"success","contents":
	 *   										[{"id":19,"teachingGroupDes":"教研组1教研组1","teachingGroupName":"教研组1","faculityId":"13","faculityName":"  计算机学院"},
	 *   										{"id":20,"teachingGroupDes":"教研组2教研组2教研组2教研组2","teachingGroupName":"教研组2","faculityId":"13","faculityName":"  计算机学院"},
	 *   										{"id":21,"teachingGroupDes":"教研组1-1教研组1-1","teachingGroupName":"教研组1-1","faculityId":"13","faculityName":"  计算机学院"},
	 *   										{"id":22,"teachingGroupDes":"教研组1-12教研组1-12教研组1-12","teachingGroupName":"教研组1-12","faculityId":"13","faculityName":"  计算机学院"}]
	 *   }
	 *   id-----------------------教研组id
	 *   teachingGroupName---教研组名称
	 *   teachingGroupDes-----教研组描述
	 *   faculityId---------------教研组所在学院id
	 *   faculityName-----------教研组所在学院名称
	 */
	public String queryTeachingGroup(int userId);
	
	/**
	 * 添加教研组
	 * @param name：教研组名称
	 * @param des：教研组描述
	 * @param facultyId：学院id
	 * @param userId：登录用户id
	 * @return
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----教研组名称为空
	 *  3----facultyId 不合法，小于0
	 *  4----添加失败
	 *  {"msg":"success"}
	 */
	public String addTeachingGroup(String name,String des,int facultyId,int userId);
	
	/**
	 * 更新教研组
	 * @param id：教研组id
	 * @param name：教研组名称
	 * @param des：教研组描述
	 * @param facultyId：学院id
	 * @param userId：登录用户id
	 * @return
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----教研组id非法
	 *  3----教研组名称为空 
	 *  4----更新失败
	 *  {"msg":"success"}
	 */
	public String updateTeachingGroup(int id,String name,String des,int facultyId,int userId);
	
	/**
	 *  删除教研组
	 * @param id：教研组id
	 * @param userId：登录用户id
	 * @return
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----教研组id非法，小于0
	 *  3----删除失败
	 *  {"msg":"success",specialtys:[{id:id,name:name,facultyName:facName,description:des}]}
	 *   name------------教研组名称
	 *   facultyName----学院名称
	 *   description------教研组描述
	 */
	public String deleteTeachingGroup(int id,int userId);
	
	/**
	 * 查询所有班级信息
	 * @param userId：登录用户id
	 * @return
	 * 失败：
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----查询失败
	 *  成功：
	 *  {"msg":"success","contents":[
	 *  											{"id":15,"description":"计算机专业1班","specialtyId":"18","gradeNumber":"2014001001"},
	 *  											{"id":16,"description":"2014001002201400100220140010022014001002","specialtyId":"18","gradeNumber":"2014001002"}]
	 *  }
	 *  id------------------------------班级id
	 *  gradeNumber-----------------班级编号
	 *  description--------------------班级描述
	 */
	public String queryGrade(int userId);
	
	/**
	 * 添加班级
	 * @param gradeNumber：班级编号
	 * @param des：班级描述
	 * @param specityId：专业id
	 * @param userId：登录用户id
	 * @return
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----班级编号为空
	 *  3----specityId 非法，小于0
	 *  4----添加失败
	 *  成功
	 *  {"msg":"success"}
	 */
	public String addGrade(String gradeNumber,String des,int specityId,int userId);
	
	
	/**
	 * 更新班级
	 * @param id：班级id
	 * @param gradeNumber：班级编号
	 * @param des：班级描述
	 * @param specityId：专业id
	 * @param userId：登录用户id
	 * @return
	 * {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----班级id不合法，小于0
	 *  3----班级编号为空
	 *  4----更新失败
	 *  成功
	 *  {"msg":"success"}
	 */
	public String updateGrade(int id,String gradeNumber,String des,int specityId,int userId);
	
	/**
	 *  删除班级
	 * @param id：班级id
	 * @param userId：登录用户id
	 * @return
	 *  {"msg":"failed",faileType:"1"}
	 *  1----用户没登录
	 *  2----班级id非法，小于0
	 *  3----删除失败
	 * {"msg":"success"}
	 */
	public String deleteGrade(int id,int userId);
	
	/**
	 * 查询用户类型
	 * @param userId：登录用户id
	 * @return
	 * {"msg":"success","contents":[
	 * 												{"id":16,"name":"专职教师"},
	 * 												{"id":17,"name":"兼职教师"},
	 * 												{"id":18,"name":"外聘教师"},
	 * 												{"id":1,"name":"学生"}]
	 * }
	 */
	public String queryUserType(int userId);
	
	/**
	 * 添加用户信息
	 * @param param：用户参数，参数以json格式发送，如：
	 * {userName:name,password:'1234',dormitoryAddress:'adbdcd',
	 * homeAddress:'ddessd',gender:gender,phone:'12345678900',
	 * email:'dd@163.com',birtdate:'2014-3-3',admissionTime:'2014-9-9',
	 * zipCode:'567890',facultyId:'1',specityId:"2",gradeId:"3",userTypeId:'1'}
	 * userName------------用户名称
	 * password-------------用户密码
	 * dormitoryAddress----宿舍地址
	 * homeAddress--------家庭地址
	 * gender---------------性别（1：男性，0：女性）
	 * phone----------------电话
	 * email-----------------emai地址
	 * birtdate--------------生日
	 * admissionTime-------对于学生：入学时间，对于老师：入职时间
	 * zipCode--------------邮政编码
	 * facultyId-------------学院id
	 * specityId-------------专业id，对于老师可以为空
	 * gradeId--------------班级id，对于老师可以为空
	 * userTypeId----------用户类型id
	 * 
	 * @param userId
	 * @return
	 * 失败：{"msg":"falied","failedmsg:failedType"}
	 * failedType：失败类型，定义如下：
	 * 1-----用户没有登录
	 * 2-----param为空
	 * 3-----查询该用户信息失败
	 * 4-----更新失败
	 * 5-----birthday日期不对
	 * 6-----timeOfEnrollment 日期不对
	 *  成功
	 *{"msg":"success"}
	 */
	public String addUser(String param,int userId);
	
	/**
	 * 更新用户信息
	 * @param param：用户参数，参数以json格式发送，如：
	 * {id:id,userName:name,password:'1234',dormitoryAddress:'adbdcd',homeAddress:'ddessd',gender:gender,phone:'12345678900',email:'dd@163.com',birtdate:'2014-3-3',admissionTime:'2014-9-9',zipCode:'567890',facultyId:'1',specityId:"2",gradeId:"3",userTypeId:'1'}
	 * facultyId--学院id
	 * specityId--专业id
	 * gradeId----班级id
	 * userTypeId---用户类型id
	 * 
	 * @param userId
	 * @return
	 * 失败：{"msg":"falied","failedmsg:failedType"}
	 * failedType：失败类型，定义如下：
	 * 1-----用户没有登录
	 * 2-----param为空
	 * 3-----查询该用户信息失败
	 * 4-----更新失败
	 * 5-----birthday日期不对
	 * 6-----timeOfEnrollment 日期不对
	 *  成功
	 * {"msg":"success"}
	 */
	public String updateUser(String param,int userId);
	
	/**
	 * 删除用户
	 * @param id：待删除的用户id
	 * @param userId：登录用户id
	 * @return
	 */
	public String deleteUser(int id,int userId);
	
}
